/**
 * @description  element custom-types
 * @author Ling
 * @date 2024-08-08
 */

import { SlateText } from '@wangeditor/editor';

type EmptyText = {
  text: '';
};
export type LinkCardElement = {
  type: 'link-card';
  title: string;
  target?: string | '_blank' | '_self' | '_parent' | '_top';
  link: string;
  iconImgSrc?: string;
  children: SlateText[]; // void 元素必须有一个空 text
  articleId?: string;
  linkType?: string; // link 外部链接   article-link  文章链接
};

// wangEditor 内部的 link elem
export type LinkElement = {
  type: 'link';
  url: string;
  target?: string | '_blank' | '_self' | '_parent' | '_top';
  children: SlateText[];
  linkType?: string; // link 外部链接   article-link  文章链接
  articleId?: string;
};

// 链接的文字
export type LinkData = {
  title?: string | number | string[] | undefined;
  text: string | number | string[] | undefined;
  link: string | number | string[] | undefined;
};

// 插入的链接参数
export type LinkArticleData = {
  title: string | number | string[] | undefined;
  articleId: string | number | string[] | undefined;
};

// 自定义的话题和@的链接
export type LinkTopicElement = {
  type: 'link-topic';
  url: string;
  target?: string | '_topic' | '_at';
  linkType?: string;
  children: ({ text: string } | SlateText)[];
};

// 提醒
export type MentionElement = {
  type: 'mention';
  value: string; // 填充的内容
  url: string; // 提醒的链接
  target: string | '_at'; // _at _topic
  typeLink?: string; // _at _topic
  children: EmptyText[]; // void 元素必须有一个空 text
  info?: any; // 附加的信息
};

// 变量
export type VariableElement = {
  varId: string; // 变量id
  varName: string; // 变量预览值
  isNotNull: any; // 是否必填 0 必填；1非必填
  type: 'variable'; // 变量类型
  value: string;
  info: any;
  children: EmptyText[]; // void 元素必须有一个空 text
};

// 分割线
export type DividerElement = {
  type: 'divider'
  children: EmptyText[]
}

